<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><link rel="stylesheet" type="text/css" href="style.css" /><script type="text/javascript" src="highlight.js"></script></head><body><pre><span class="hs-pragma">{-# LANGUAGE GADTs #-}</span><span>
</span><span id="line-2"></span><span>
</span><span id="line-3"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-4"></span><span class="hs-comment">--</span><span>
</span><span id="line-5"></span><span class="hs-comment">-- Code generator utilities; mostly monadic</span><span>
</span><span id="line-6"></span><span class="hs-comment">--</span><span>
</span><span id="line-7"></span><span class="hs-comment">-- (c) The University of Glasgow 2004-2006</span><span>
</span><span id="line-8"></span><span class="hs-comment">--</span><span>
</span><span id="line-9"></span><span class="hs-comment">-----------------------------------------------------------------------------</span><span>
</span><span id="line-10"></span><span>
</span><span id="line-11"></span><span class="hs-keyword">module</span><span> </span><span class="hs-identifier">GHC.StgToCmm.CgUtils</span><span> </span><span class="hs-special">(</span><span>
</span><span id="line-12"></span><span>        </span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#fixStgRegisters"><span class="hs-identifier">fixStgRegisters</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-13"></span><span>        </span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier">baseRegOffset</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-14"></span><span>        </span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#get_Regtable_addr_from_offset"><span class="hs-identifier">get_Regtable_addr_from_offset</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-15"></span><span>        </span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#regTableOffset"><span class="hs-identifier">regTableOffset</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-16"></span><span>        </span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#get_GlobalReg_addr"><span class="hs-identifier">get_GlobalReg_addr</span></a></span><span class="hs-special">,</span><span>
</span><span id="line-17"></span><span>  </span><span class="hs-special">)</span><span> </span><span class="hs-keyword">where</span><span>
</span><span id="line-18"></span><span>
</span><span id="line-19"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Prelude.html"><span class="hs-identifier">GHC.Prelude</span></a></span><span>
</span><span id="line-20"></span><span>
</span><span id="line-21"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Platform.Regs.html"><span class="hs-identifier">GHC.Platform.Regs</span></a></span><span>
</span><span id="line-22"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.html"><span class="hs-identifier">GHC.Cmm</span></a></span><span>
</span><span id="line-23"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Block</span></a></span><span>
</span><span id="line-24"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Graph.html"><span class="hs-identifier">GHC.Cmm.Dataflow.Graph</span></a></span><span>
</span><span id="line-25"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.Utils.html"><span class="hs-identifier">GHC.Cmm.Utils</span></a></span><span>
</span><span id="line-26"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Cmm.CLabel.html"><span class="hs-identifier">GHC.Cmm.CLabel</span></a></span><span>
</span><span id="line-27"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html"><span class="hs-identifier">GHC.Driver.Session</span></a></span><span>
</span><span id="line-28"></span><span class="hs-keyword">import</span><span> </span><span class="annot"><a href="GHC.Utils.Outputable.html"><span class="hs-identifier">GHC.Utils.Outputable</span></a></span><span>
</span><span id="line-29"></span><span>
</span><span id="line-30"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-31"></span><span class="hs-comment">-- Information about global registers</span><span>
</span><span id="line-32"></span><span>
</span><span id="line-33"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-type">baseRegOffset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span>
</span><span id="line-34"></span><span>
</span><span id="line-35"></span><span id="baseRegOffset"><span class="annot"><span class="annottext">baseRegOffset :: DynFlags -&gt; GlobalReg -&gt; Int
</span><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var hs-var">baseRegOffset</span></a></span></span><span> </span><span id="local-6989586621681010987"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010987"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR1"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010987"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-36"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010984"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010984"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR2"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR2</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010984"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-37"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010982"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010982"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR3"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR3</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010982"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-38"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010980"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010980"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR4"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR4</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010980"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-39"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010978"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010978"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">5</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR5"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR5</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010978"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-40"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010976"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010976"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">6</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR6"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR6</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010976"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-41"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010974"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010974"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">7</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR7"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR7</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010974"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-42"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010972"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010972"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">8</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR8"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR8</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010972"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-43"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010970"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010970"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">9</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR9"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR9</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010970"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-44"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010968"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010968"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">10</span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>   </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rR10"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rR10</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010968"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-45"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#VanillaReg"><span class="hs-identifier hs-type">VanillaReg</span></a></span><span> </span><span id="local-6989586621681010966"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010966"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="annot"><span class="annottext">VGcPtr
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Registers above R10 are not supported (tried to use R&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010966"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-46"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010963"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010963"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rF1"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rF1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010963"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-47"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010960"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010960"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rF2"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rF2</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010960"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-48"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010958"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010958"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rF3"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rF3</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010958"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-49"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010956"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010956"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rF4"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rF4</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010956"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-50"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010954"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010954"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">5</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rF5"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rF5</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010954"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-51"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010952"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010952"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">6</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rF6"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rF6</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010952"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-52"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#FloatReg"><span class="hs-identifier hs-type">FloatReg</span></a></span><span>  </span><span id="local-6989586621681010950"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010950"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Registers above F6 are not supported (tried to use F&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010950"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-53"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010949"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010949"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rD1"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rD1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010949"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-54"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010946"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010946"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rD2"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rD2</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010946"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-55"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010944"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010944"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rD3"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rD3</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010944"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-56"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010942"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010942"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rD4"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rD4</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010942"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-57"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010940"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010940"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">5</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rD5"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rD5</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010940"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-58"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010938"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010938"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">6</span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rD6"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rD6</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010938"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-59"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#DoubleReg"><span class="hs-identifier hs-type">DoubleReg</span></a></span><span> </span><span id="local-6989586621681010936"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010936"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>       </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Registers above D6 are not supported (tried to use D&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010936"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-60"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010935"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010935"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rXMM1"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rXMM1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010935"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-61"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010932"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010932"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rXMM2"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rXMM2</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010932"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-62"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010930"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010930"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rXMM3"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rXMM3</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010930"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-63"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010928"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010928"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rXMM4"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rXMM4</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010928"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-64"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010926"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010926"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">5</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rXMM5"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rXMM5</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010926"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-65"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010924"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010924"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">6</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rXMM6"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rXMM6</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010924"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-66"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#XmmReg"><span class="hs-identifier hs-type">XmmReg</span></a></span><span> </span><span id="local-6989586621681010922"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010922"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Registers above XMM6 are not supported (tried to use XMM&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010922"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-67"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010921"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010921"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rYMM1"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rYMM1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010921"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-68"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010918"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010918"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rYMM2"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rYMM2</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010918"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-69"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010916"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010916"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rYMM3"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rYMM3</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010916"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-70"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010914"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010914"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rYMM4"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rYMM4</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010914"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-71"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010912"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010912"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">5</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rYMM5"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rYMM5</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010912"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-72"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010910"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010910"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">6</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rYMM6"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rYMM6</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010910"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-73"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#YmmReg"><span class="hs-identifier hs-type">YmmReg</span></a></span><span> </span><span id="local-6989586621681010908"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010908"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Registers above YMM6 are not supported (tried to use YMM&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010908"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-74"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010907"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010907"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rZMM1"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rZMM1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010907"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-75"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010904"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010904"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">2</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rZMM2"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rZMM2</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010904"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-76"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010902"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010902"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">3</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rZMM3"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rZMM3</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010902"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-77"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010900"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010900"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">4</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rZMM4"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rZMM4</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010900"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-78"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010898"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010898"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">5</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rZMM5"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rZMM5</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010898"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-79"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010896"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010896"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">6</span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rZMM6"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rZMM6</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010896"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-80"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#ZmmReg"><span class="hs-identifier hs-type">ZmmReg</span></a></span><span> </span><span id="local-6989586621681010894"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010894"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Registers above ZMM6 are not supported (tried to use ZMM&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010894"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-81"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010893"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010893"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Sp"><span class="hs-identifier hs-var">Sp</span></a></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rSp"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rSp</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010893"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-82"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010890"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010890"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#SpLim"><span class="hs-identifier hs-var">SpLim</span></a></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rSpLim"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rSpLim</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010890"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-83"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010887"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010887"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">1</span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rL1"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rL1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010887"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-84"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#LongReg"><span class="hs-identifier hs-type">LongReg</span></a></span><span> </span><span id="local-6989586621681010884"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010884"><span class="hs-identifier hs-var">n</span></a></span></span><span class="hs-special">)</span><span>         </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;Registers above L1 are not supported (tried to use L&quot;</span></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; String
forall a. Show a =&gt; a -&gt; String
</span><a href="../../base/src/GHC.Show.html#show"><span class="hs-identifier hs-var">show</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010884"><span class="hs-identifier hs-var">n</span></a></span><span> </span><span class="annot"><span class="annottext">String -&gt; String -&gt; String
forall a. [a] -&gt; [a] -&gt; [a]
</span><a href="../../base/src/GHC.Base.html#%2B%2B"><span class="hs-operator hs-var">++</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;)&quot;</span></span><span class="hs-special">)</span><span>
</span><span id="line-85"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010883"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010883"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#Hp"><span class="hs-identifier hs-var">Hp</span></a></span><span>                  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rHp"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rHp</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010883"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-86"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010880"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010880"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpLim"><span class="hs-identifier hs-var">HpLim</span></a></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rHpLim"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rHpLim</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010880"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-87"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010877"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010877"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CCCS"><span class="hs-identifier hs-var">CCCS</span></a></span><span>                </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rCCCS"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rCCCS</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010877"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-88"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010874"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010874"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentTSO"><span class="hs-identifier hs-var">CurrentTSO</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rCurrentTSO"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rCurrentTSO</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010874"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-89"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010871"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010871"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#CurrentNursery"><span class="hs-identifier hs-var">CurrentNursery</span></a></span><span>      </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rCurrentNursery"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rCurrentNursery</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010871"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-90"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010868"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010868"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#HpAlloc"><span class="hs-identifier hs-var">HpAlloc</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_StgRegTable_rHpAlloc"><span class="hs-identifier hs-var">oFFSET_StgRegTable_rHpAlloc</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010868"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-91"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010865"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010865"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#EagerBlackholeInfo"><span class="hs-identifier hs-var">EagerBlackholeInfo</span></a></span><span>  </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_stgEagerBlackholeInfo"><span class="hs-identifier hs-var">oFFSET_stgEagerBlackholeInfo</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010865"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-92"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010862"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010862"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCEnter1"><span class="hs-identifier hs-var">GCEnter1</span></a></span><span>            </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_stgGCEnter1"><span class="hs-identifier hs-var">oFFSET_stgGCEnter1</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010862"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-93"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span id="local-6989586621681010859"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010859"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#GCFun"><span class="hs-identifier hs-var">GCFun</span></a></span><span>               </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_stgGCFun"><span class="hs-identifier hs-var">oFFSET_stgGCFun</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010859"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-94"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span>             </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CgUtils.baseRegOffset:BaseReg&quot;</span></span><span>
</span><span id="line-95"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#PicBaseReg"><span class="hs-identifier hs-var">PicBaseReg</span></a></span><span>          </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CgUtils.baseRegOffset:PicBaseReg&quot;</span></span><span>
</span><span id="line-96"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span>              </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CgUtils.baseRegOffset:MachSp&quot;</span></span><span>
</span><span id="line-97"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span>      </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#UnwindReturnReg"><span class="hs-identifier hs-var">UnwindReturnReg</span></a></span><span>     </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">String -&gt; Int
forall a. String -&gt; a
</span><a href="GHC.Utils.Panic.Plain.html#panic"><span class="hs-identifier hs-var">panic</span></a></span><span> </span><span class="annot"><span class="annottext">String
</span><span class="hs-string">&quot;CgUtils.baseRegOffset:UnwindReturnReg&quot;</span></span><span>
</span><span id="line-98"></span><span>
</span><span id="line-99"></span><span>
</span><span id="line-100"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-101"></span><span class="hs-comment">--</span><span>
</span><span id="line-102"></span><span class="hs-comment">-- STG/Cmm GlobalReg</span><span>
</span><span id="line-103"></span><span class="hs-comment">--</span><span>
</span><span id="line-104"></span><span class="hs-comment">-- -----------------------------------------------------------------------------</span><span>
</span><span id="line-105"></span><span>
</span><span id="line-106"></span><span class="hs-comment">-- | We map STG registers onto appropriate CmmExprs.  Either they map</span><span>
</span><span id="line-107"></span><span class="hs-comment">-- to real machine registers or stored as offsets from BaseReg.  Given</span><span>
</span><span id="line-108"></span><span class="hs-comment">-- a GlobalReg, get_GlobalReg_addr always produces the</span><span>
</span><span id="line-109"></span><span class="hs-comment">-- register table address for it.</span><span>
</span><span id="line-110"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#get_GlobalReg_addr"><span class="hs-identifier hs-type">get_GlobalReg_addr</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#GlobalReg"><span class="hs-identifier hs-type">GlobalReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-111"></span><span id="get_GlobalReg_addr"><span class="annot"><span class="annottext">get_GlobalReg_addr :: DynFlags -&gt; GlobalReg -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#get_GlobalReg_addr"><span class="hs-identifier hs-var hs-var">get_GlobalReg_addr</span></a></span></span><span> </span><span id="local-6989586621681010852"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010852"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#regTableOffset"><span class="hs-identifier hs-var">regTableOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010852"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><span class="hs-number">0</span></span><span>
</span><span id="line-112"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#get_GlobalReg_addr"><span class="hs-identifier hs-var">get_GlobalReg_addr</span></a></span><span> </span><span id="local-6989586621681010851"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010851"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010850"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010850"><span class="hs-identifier hs-var">mid</span></a></span></span><span>
</span><span id="line-113"></span><span>    </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#get_Regtable_addr_from_offset"><span class="hs-identifier hs-var">get_Regtable_addr_from_offset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010851"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; GlobalReg -&gt; Int
</span><a href="GHC.StgToCmm.CgUtils.html#baseRegOffset"><span class="hs-identifier hs-var">baseRegOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010851"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010850"><span class="hs-identifier hs-var">mid</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-114"></span><span>
</span><span id="line-115"></span><span class="hs-comment">-- Calculate a literal representing an offset into the register table.</span><span>
</span><span id="line-116"></span><span class="hs-comment">-- Used when we don't have an actual BaseReg to offset from.</span><span>
</span><span id="line-117"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#regTableOffset"><span class="hs-identifier hs-type">regTableOffset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-118"></span><span id="regTableOffset"><span class="annot"><span class="annottext">regTableOffset :: DynFlags -&gt; Int -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#regTableOffset"><span class="hs-identifier hs-var hs-var">regTableOffset</span></a></span></span><span> </span><span id="local-6989586621681010849"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010849"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010848"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010848"><span class="hs-identifier hs-var">n</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-119"></span><span>  </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CLabel -&gt; Int -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmLabelOff"><span class="hs-identifier hs-var">CmmLabelOff</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="GHC.Cmm.CLabel.html#mkMainCapabilityLabel"><span class="hs-identifier hs-var">mkMainCapabilityLabel</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Int
</span><a href="GHC.Driver.Session.html#oFFSET_Capability_r"><span class="hs-identifier hs-var">oFFSET_Capability_r</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010849"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Int -&gt; Int -&gt; Int
forall a. Num a =&gt; a -&gt; a -&gt; a
</span><a href="../../base/src/GHC.Num.html#%2B"><span class="hs-operator hs-var">+</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010848"><span class="hs-identifier hs-var">n</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span>
</span><span id="line-120"></span><span>
</span><span id="line-121"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#get_Regtable_addr_from_offset"><span class="hs-identifier hs-type">get_Regtable_addr_from_offset</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="hs-identifier hs-type">Int</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmExpr"><span class="hs-identifier hs-type">CmmExpr</span></a></span><span>
</span><span id="line-122"></span><span id="get_Regtable_addr_from_offset"><span class="annot"><span class="annottext">get_Regtable_addr_from_offset :: DynFlags -&gt; Int -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#get_Regtable_addr_from_offset"><span class="hs-identifier hs-var hs-var">get_Regtable_addr_from_offset</span></a></span></span><span> </span><span id="local-6989586621681010842"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010842"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010841"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010841"><span class="hs-identifier hs-var">offset</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-123"></span><span>    </span><span class="hs-keyword">if</span><span> </span><span class="annot"><span class="annottext">Platform -&gt; Bool
</span><a href="GHC.Platform.Regs.html#haveRegBase"><span class="hs-identifier hs-var">haveRegBase</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010842"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-124"></span><span>    </span><span class="hs-keyword">then</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; Int -&gt; CmmExpr
</span><a href="GHC.Cmm.Utils.html#cmmRegOff"><span class="hs-identifier hs-var">cmmRegOff</span></a></span><span> </span><span class="annot"><span class="annottext">CmmReg
</span><a href="GHC.Cmm.Expr.html#baseReg"><span class="hs-identifier hs-var">baseReg</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010841"><span class="hs-identifier hs-var">offset</span></a></span><span>
</span><span id="line-125"></span><span>    </span><span class="hs-keyword">else</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Int -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#regTableOffset"><span class="hs-identifier hs-var">regTableOffset</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010842"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010841"><span class="hs-identifier hs-var">offset</span></a></span><span>
</span><span id="line-126"></span><span>
</span><span id="line-127"></span><span class="hs-comment">-- | Fixup global registers so that they assign to locations within the</span><span>
</span><span id="line-128"></span><span class="hs-comment">-- RegTable if they aren't pinned for the current target.</span><span>
</span><span id="line-129"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#fixStgRegisters"><span class="hs-identifier hs-type">fixStgRegisters</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.html#RawCmmDecl"><span class="hs-identifier hs-type">RawCmmDecl</span></a></span><span>
</span><span id="line-130"></span><span id="fixStgRegisters"><span class="annot"><span class="annottext">fixStgRegisters :: DynFlags -&gt; RawCmmDecl -&gt; RawCmmDecl
</span><a href="GHC.StgToCmm.CgUtils.html#fixStgRegisters"><span class="hs-identifier hs-var hs-var">fixStgRegisters</span></a></span></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><span class="hs-identifier">_</span></span><span> </span><span id="local-6989586621681010836"><span class="annot"><span class="annottext">top :: RawCmmDecl
</span><a href="#local-6989586621681010836"><span class="hs-identifier hs-var">top</span></a></span></span><span class="hs-glyph">@</span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmData"><span class="hs-identifier hs-type">CmmData</span></a></span><span> </span><span class="annot"><span class="annottext">Section
</span><span class="hs-identifier">_</span></span><span> </span><span class="annot"><span class="annottext">RawCmmStatics
</span><span class="hs-identifier">_</span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">RawCmmDecl
</span><a href="#local-6989586621681010836"><span class="hs-identifier hs-var">top</span></a></span><span>
</span><span id="line-131"></span><span>
</span><span id="line-132"></span><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#fixStgRegisters"><span class="hs-identifier hs-var">fixStgRegisters</span></a></span><span> </span><span id="local-6989586621681010834"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010834"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-type">CmmProc</span></a></span><span> </span><span id="local-6989586621681010832"><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681010832"><span class="hs-identifier hs-var">info</span></a></span></span><span> </span><span id="local-6989586621681010831"><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010831"><span class="hs-identifier hs-var">lbl</span></a></span></span><span> </span><span id="local-6989586621681010830"><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681010830"><span class="hs-identifier hs-var">live</span></a></span></span><span> </span><span id="local-6989586621681010829"><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010829"><span class="hs-identifier hs-var">graph</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-133"></span><span>  </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681010828"><span class="annot"><span class="annottext">graph' :: CmmGraph
</span><a href="#local-6989586621681010828"><span class="hs-identifier hs-var hs-var">graph'</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(Graph CmmNode C C -&gt; Graph CmmNode C C) -&gt; CmmGraph -&gt; CmmGraph
forall (n :: Extensibility -&gt; Extensibility -&gt; *)
       (n' :: Extensibility -&gt; Extensibility -&gt; *).
(Graph n C C -&gt; Graph n' C C) -&gt; GenCmmGraph n -&gt; GenCmmGraph n'
</span><a href="GHC.Cmm.Utils.html#modifyGraph"><span class="hs-identifier hs-var">modifyGraph</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">(forall (e1 :: Extensibility) (x1 :: Extensibility).
 Block CmmNode e1 x1 -&gt; Block CmmNode e1 x1)
-&gt; Graph CmmNode C C -&gt; Graph CmmNode C C
forall (block :: (Extensibility -&gt; Extensibility -&gt; *)
                 -&gt; Extensibility -&gt; Extensibility -&gt; *)
       (n :: Extensibility -&gt; Extensibility -&gt; *)
       (block' :: (Extensibility -&gt; Extensibility -&gt; *)
                  -&gt; Extensibility -&gt; Extensibility -&gt; *)
       (n' :: Extensibility -&gt; Extensibility -&gt; *) (e :: Extensibility)
       (x :: Extensibility).
(forall (e1 :: Extensibility) (x1 :: Extensibility).
 block n e1 x1 -&gt; block' n' e1 x1)
-&gt; Graph' block n e x -&gt; Graph' block' n' e x
</span><a href="GHC.Cmm.Dataflow.Graph.html#mapGraphBlocks"><span class="hs-identifier hs-var">mapGraphBlocks</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; Block CmmNode e1 x1 -&gt; Block CmmNode e1 x1
forall (e :: Extensibility) (x :: Extensibility).
DynFlags -&gt; Block CmmNode e x -&gt; Block CmmNode e x
</span><a href="GHC.StgToCmm.CgUtils.html#fixStgRegBlock"><span class="hs-identifier hs-var">fixStgRegBlock</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010834"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010829"><span class="hs-identifier hs-var">graph</span></a></span><span>
</span><span id="line-134"></span><span>  </span><span class="hs-keyword">in</span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
-&gt; CLabel -&gt; [GlobalReg] -&gt; CmmGraph -&gt; RawCmmDecl
forall d h g. h -&gt; CLabel -&gt; [GlobalReg] -&gt; g -&gt; GenCmmDecl d h g
</span><a href="GHC.Cmm.html#CmmProc"><span class="hs-identifier hs-var">CmmProc</span></a></span><span> </span><span class="annot"><span class="annottext">LabelMap RawCmmStatics
</span><a href="#local-6989586621681010832"><span class="hs-identifier hs-var">info</span></a></span><span> </span><span class="annot"><span class="annottext">CLabel
</span><a href="#local-6989586621681010831"><span class="hs-identifier hs-var">lbl</span></a></span><span> </span><span class="annot"><span class="annottext">[GlobalReg]
</span><a href="#local-6989586621681010830"><span class="hs-identifier hs-var">live</span></a></span><span> </span><span class="annot"><span class="annottext">CmmGraph
</span><a href="#local-6989586621681010828"><span class="hs-identifier hs-var">graph'</span></a></span><span>
</span><span id="line-135"></span><span>
</span><span id="line-136"></span><span id="local-6989586621681011118"><span id="local-6989586621681011119"><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#fixStgRegBlock"><span class="hs-identifier hs-type">fixStgRegBlock</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#Block"><span class="hs-identifier hs-type">Block</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011119"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011118"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Dataflow.Block.html#Block"><span class="hs-identifier hs-type">Block</span></a></span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011119"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011118"><span class="hs-identifier hs-type">x</span></a></span></span></span><span>
</span><span id="line-137"></span><span id="fixStgRegBlock"><span class="annot"><span class="annottext">fixStgRegBlock :: forall (e :: Extensibility) (x :: Extensibility).
DynFlags -&gt; Block CmmNode e x -&gt; Block CmmNode e x
</span><a href="GHC.StgToCmm.CgUtils.html#fixStgRegBlock"><span class="hs-identifier hs-var hs-var">fixStgRegBlock</span></a></span></span><span> </span><span id="local-6989586621681010824"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010824"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010823"><span class="annot"><span class="annottext">Block CmmNode e x
</span><a href="#local-6989586621681010823"><span class="hs-identifier hs-var">block</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">(forall (e1 :: Extensibility) (x1 :: Extensibility).
 CmmNode e1 x1 -&gt; CmmNode e1 x1)
-&gt; Block CmmNode e x -&gt; Block CmmNode e x
forall (n :: Extensibility -&gt; Extensibility -&gt; *)
       (n' :: Extensibility -&gt; Extensibility -&gt; *) (e :: Extensibility)
       (x :: Extensibility).
(forall (e1 :: Extensibility) (x1 :: Extensibility).
 n e1 x1 -&gt; n' e1 x1)
-&gt; Block n e x -&gt; Block n' e x
</span><a href="GHC.Cmm.Dataflow.Block.html#mapBlock"><span class="hs-identifier hs-var">mapBlock</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">DynFlags -&gt; CmmNode e1 x1 -&gt; CmmNode e1 x1
forall (e :: Extensibility) (x :: Extensibility).
DynFlags -&gt; CmmNode e x -&gt; CmmNode e x
</span><a href="GHC.StgToCmm.CgUtils.html#fixStgRegStmt"><span class="hs-identifier hs-var">fixStgRegStmt</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010824"><span class="hs-identifier hs-var">dflags</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">Block CmmNode e x
</span><a href="#local-6989586621681010823"><span class="hs-identifier hs-var">block</span></a></span><span>
</span><span id="line-138"></span><span>
</span><span id="line-139"></span><span id="local-6989586621681011102"><span id="local-6989586621681011103"><span class="annot"><a href="GHC.StgToCmm.CgUtils.html#fixStgRegStmt"><span class="hs-identifier hs-type">fixStgRegStmt</span></a></span><span> </span><span class="hs-glyph">::</span><span> </span><span class="annot"><a href="GHC.Driver.Session.html#DynFlags"><span class="hs-identifier hs-type">DynFlags</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011103"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011102"><span class="hs-identifier hs-type">x</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmNode"><span class="hs-identifier hs-type">CmmNode</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011103"><span class="hs-identifier hs-type">e</span></a></span><span> </span><span class="annot"><a href="#local-6989586621681011102"><span class="hs-identifier hs-type">x</span></a></span></span></span><span>
</span><span id="line-140"></span><span id="fixStgRegStmt"><span class="annot"><span class="annottext">fixStgRegStmt :: forall (e :: Extensibility) (x :: Extensibility).
DynFlags -&gt; CmmNode e x -&gt; CmmNode e x
</span><a href="GHC.StgToCmm.CgUtils.html#fixStgRegStmt"><span class="hs-identifier hs-var hs-var">fixStgRegStmt</span></a></span></span><span> </span><span id="local-6989586621681010810"><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010810"><span class="hs-identifier hs-var">dflags</span></a></span></span><span> </span><span id="local-6989586621681010809"><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010809"><span class="hs-identifier hs-var">stmt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">CmmNode e x -&gt; CmmNode e x
</span><a href="#local-6989586621681010808"><span class="hs-identifier hs-var">fixAssign</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmNode e x -&gt; CmmNode e x) -&gt; CmmNode e x -&gt; CmmNode e x
forall a b. (a -&gt; b) -&gt; a -&gt; b
</span><a href="../../base/src/GHC.Base.html#%24"><span class="hs-operator hs-var">$</span></a></span><span> </span><span class="annot"><span class="annottext">(CmmExpr -&gt; CmmExpr) -&gt; CmmNode e x -&gt; CmmNode e x
forall (e :: Extensibility) (x :: Extensibility).
(CmmExpr -&gt; CmmExpr) -&gt; CmmNode e x -&gt; CmmNode e x
</span><a href="GHC.Cmm.Node.html#mapExpDeep"><span class="hs-identifier hs-var">mapExpDeep</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmExpr
</span><a href="#local-6989586621681010806"><span class="hs-identifier hs-var">fixExpr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010809"><span class="hs-identifier hs-var">stmt</span></a></span><span>
</span><span id="line-141"></span><span>  </span><span class="hs-keyword">where</span><span>
</span><span id="line-142"></span><span>    </span><span id="local-6989586621681010805"><span class="annot"><span class="annottext">platform :: Platform
</span><a href="#local-6989586621681010805"><span class="hs-identifier hs-var hs-var">platform</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; Platform
</span><a href="GHC.Driver.Session.html#targetPlatform"><span class="hs-identifier hs-var hs-var">targetPlatform</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010810"><span class="hs-identifier hs-var">dflags</span></a></span><span>
</span><span id="line-143"></span><span>
</span><span id="line-144"></span><span>    </span><span id="local-6989586621681010808"><span class="annot"><span class="annottext">fixAssign :: CmmNode e x -&gt; CmmNode e x
</span><a href="#local-6989586621681010808"><span class="hs-identifier hs-var hs-var">fixAssign</span></a></span></span><span> </span><span id="local-6989586621681010804"><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010804"><span class="hs-identifier hs-var">stmt</span></a></span></span><span> </span><span class="hs-glyph">=</span><span>
</span><span id="line-145"></span><span>      </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010804"><span class="hs-identifier hs-var">stmt</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-146"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Node.html#CmmAssign"><span class="hs-identifier hs-type">CmmAssign</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681010796"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010796"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681010795"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010795"><span class="hs-identifier hs-var">src</span></a></span></span><span>
</span><span id="line-147"></span><span>          </span><span class="hs-comment">-- MachSp isn't an STG register; it's merely here for tracking unwind</span><span>
</span><span id="line-148"></span><span>          </span><span class="hs-comment">-- information</span><span>
</span><span id="line-149"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010796"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; GlobalReg -&gt; Bool
forall a. Eq a =&gt; a -&gt; a -&gt; Bool
</span><span class="hs-operator hs-var">==</span></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010804"><span class="hs-identifier hs-var">stmt</span></a></span><span>
</span><span id="line-150"></span><span>          </span><span class="hs-glyph">|</span><span> </span><span class="annot"><span class="annottext">Bool
</span><a href="../../base/src/GHC.Base.html#otherwise"><span class="hs-identifier hs-var">otherwise</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-151"></span><span>            </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681010794"><span class="annot"><span class="annottext">baseAddr :: CmmExpr
</span><a href="#local-6989586621681010794"><span class="hs-identifier hs-var hs-var">baseAddr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; GlobalReg -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#get_GlobalReg_addr"><span class="hs-identifier hs-var">get_GlobalReg_addr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010810"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010796"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-152"></span><span>            </span><span class="hs-keyword">in</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010796"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; [GlobalReg] -&gt; Bool
forall (t :: * -&gt; *) a. (Foldable t, Eq a) =&gt; a -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#elem"><span class="hs-operator hs-var">`elem`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [GlobalReg]
</span><a href="GHC.Platform.Regs.html#activeStgRegs"><span class="hs-identifier hs-var">activeStgRegs</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010805"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-153"></span><span>                </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr -&gt; CmmNode 'Open 'Open
</span><a href="GHC.Cmm.Node.html#CmmAssign"><span class="hs-identifier hs-var">CmmAssign</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010796"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010795"><span class="hs-identifier hs-var">src</span></a></span><span>
</span><span id="line-154"></span><span>                </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmExpr -&gt; CmmNode 'Open 'Open
</span><a href="GHC.Cmm.Node.html#CmmStore"><span class="hs-identifier hs-var">CmmStore</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010794"><span class="hs-identifier hs-var">baseAddr</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010795"><span class="hs-identifier hs-var">src</span></a></span><span>
</span><span id="line-155"></span><span>        </span><span id="local-6989586621681010790"><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010790"><span class="hs-identifier hs-var">other_stmt</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmNode e x
</span><a href="#local-6989586621681010790"><span class="hs-identifier hs-var">other_stmt</span></a></span><span>
</span><span id="line-156"></span><span>
</span><span id="line-157"></span><span>    </span><span id="local-6989586621681010806"><span class="annot"><span class="annottext">fixExpr :: CmmExpr -&gt; CmmExpr
</span><a href="#local-6989586621681010806"><span class="hs-identifier hs-var hs-var">fixExpr</span></a></span></span><span> </span><span id="local-6989586621681010789"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010789"><span class="hs-identifier hs-var">expr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010789"><span class="hs-identifier hs-var">expr</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-158"></span><span>        </span><span class="hs-comment">-- MachSp isn't an STG; it's merely here for tracking unwind information</span><span>
</span><span id="line-159"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#MachSp"><span class="hs-identifier hs-var">MachSp</span></a></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010789"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-160"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-type">CmmReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681010787"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010787"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-161"></span><span>            </span><span class="hs-comment">-- Replace register leaves with appropriate StixTrees for</span><span>
</span><span id="line-162"></span><span>            </span><span class="hs-comment">-- the given target.  MagicIds which map to a reg on this</span><span>
</span><span id="line-163"></span><span>            </span><span class="hs-comment">-- arch are left unchanged.  For the rest, BaseReg is taken</span><span>
</span><span id="line-164"></span><span>            </span><span class="hs-comment">-- to mean the address of the reg table in MainCapability,</span><span>
</span><span id="line-165"></span><span>            </span><span class="hs-comment">-- and for all others we generate an indirection to its</span><span>
</span><span id="line-166"></span><span>            </span><span class="hs-comment">-- location in the register table.</span><span>
</span><span id="line-167"></span><span>            </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010787"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; [GlobalReg] -&gt; Bool
forall (t :: * -&gt; *) a. (Foldable t, Eq a) =&gt; a -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#elem"><span class="hs-operator hs-var">`elem`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [GlobalReg]
</span><a href="GHC.Platform.Regs.html#activeStgRegs"><span class="hs-identifier hs-var">activeStgRegs</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010805"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-168"></span><span>                </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010789"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-169"></span><span>                </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-170"></span><span>                    </span><span class="hs-keyword">let</span><span> </span><span id="local-6989586621681010786"><span class="annot"><span class="annottext">baseAddr :: CmmExpr
</span><a href="#local-6989586621681010786"><span class="hs-identifier hs-var hs-var">baseAddr</span></a></span></span><span> </span><span class="hs-glyph">=</span><span> </span><span class="annot"><span class="annottext">DynFlags -&gt; GlobalReg -&gt; CmmExpr
</span><a href="GHC.StgToCmm.CgUtils.html#get_GlobalReg_addr"><span class="hs-identifier hs-var">get_GlobalReg_addr</span></a></span><span> </span><span class="annot"><span class="annottext">DynFlags
</span><a href="#local-6989586621681010810"><span class="hs-identifier hs-var">dflags</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010787"><span class="hs-identifier hs-var">reg</span></a></span><span>
</span><span id="line-171"></span><span>                    </span><span class="hs-keyword">in</span><span> </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010787"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-172"></span><span>                        </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="GHC.Cmm.Expr.html#BaseReg"><span class="hs-identifier hs-var">BaseReg</span></a></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010786"><span class="hs-identifier hs-var">baseAddr</span></a></span><span>
</span><span id="line-173"></span><span>                        </span><span id="local-6989586621681010785"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010785"><span class="hs-identifier hs-var">_other</span></a></span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmType -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLoad"><span class="hs-identifier hs-var">CmmLoad</span></a></span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010786"><span class="hs-identifier hs-var">baseAddr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; GlobalReg -&gt; CmmType
</span><a href="GHC.Cmm.Expr.html#globalRegType"><span class="hs-identifier hs-var">globalRegType</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010805"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010787"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-174"></span><span>
</span><span id="line-175"></span><span>        </span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmRegOff"><span class="hs-identifier hs-type">CmmRegOff</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-type">CmmGlobal</span></a></span><span> </span><span id="local-6989586621681010781"><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010781"><span class="hs-identifier hs-var">reg</span></a></span></span><span class="hs-special">)</span><span> </span><span id="local-6989586621681010780"><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010780"><span class="hs-identifier hs-var">offset</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span>
</span><span id="line-176"></span><span>            </span><span class="hs-comment">-- RegOf leaves are just a shorthand form. If the reg maps</span><span>
</span><span id="line-177"></span><span>            </span><span class="hs-comment">-- to a real reg, we keep the shorthand, otherwise, we just</span><span>
</span><span id="line-178"></span><span>            </span><span class="hs-comment">-- expand it and defer to the above code.</span><span>
</span><span id="line-179"></span><span>            </span><span class="hs-keyword">case</span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010781"><span class="hs-identifier hs-var">reg</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg -&gt; [GlobalReg] -&gt; Bool
forall (t :: * -&gt; *) a. (Foldable t, Eq a) =&gt; a -&gt; t a -&gt; Bool
</span><a href="../../base/src/Data.Foldable.html#elem"><span class="hs-operator hs-var">`elem`</span></a></span><span> </span><span class="annot"><span class="annottext">Platform -&gt; [GlobalReg]
</span><a href="GHC.Platform.Regs.html#activeStgRegs"><span class="hs-identifier hs-var">activeStgRegs</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010805"><span class="hs-identifier hs-var">platform</span></a></span><span> </span><span class="hs-keyword">of</span><span>
</span><span id="line-180"></span><span>                </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">True</span></span><span>  </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010789"><span class="hs-identifier hs-var">expr</span></a></span><span>
</span><span id="line-181"></span><span>                </span><span class="annot"><span class="annottext">Bool
</span><span class="hs-identifier hs-var">False</span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">MachOp -&gt; [CmmExpr] -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmMachOp"><span class="hs-identifier hs-var">CmmMachOp</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Width -&gt; MachOp
</span><a href="GHC.Cmm.MachOp.html#MO_Add"><span class="hs-identifier hs-var">MO_Add</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010805"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span> </span><span class="hs-special">[</span><span>
</span><span id="line-182"></span><span>                                    </span><span class="annot"><span class="annottext">CmmExpr -&gt; CmmExpr
</span><a href="#local-6989586621681010806"><span class="hs-identifier hs-var">fixExpr</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">CmmReg -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmReg"><span class="hs-identifier hs-var">CmmReg</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">GlobalReg -&gt; CmmReg
</span><a href="GHC.Cmm.Expr.html#CmmGlobal"><span class="hs-identifier hs-var">CmmGlobal</span></a></span><span> </span><span class="annot"><span class="annottext">GlobalReg
</span><a href="#local-6989586621681010781"><span class="hs-identifier hs-var">reg</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">,</span><span>
</span><span id="line-183"></span><span>                                    </span><span class="annot"><span class="annottext">CmmLit -&gt; CmmExpr
</span><a href="GHC.Cmm.Expr.html#CmmLit"><span class="hs-identifier hs-var">CmmLit</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Integer -&gt; Width -&gt; CmmLit
</span><a href="GHC.Cmm.Expr.html#CmmInt"><span class="hs-identifier hs-var">CmmInt</span></a></span><span> </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Int -&gt; Integer
forall a b. (Integral a, Num b) =&gt; a -&gt; b
</span><a href="../../base/src/GHC.Real.html#fromIntegral"><span class="hs-identifier hs-var">fromIntegral</span></a></span><span> </span><span class="annot"><span class="annottext">Int
</span><a href="#local-6989586621681010780"><span class="hs-identifier hs-var">offset</span></a></span><span class="hs-special">)</span><span>
</span><span id="line-184"></span><span>                                                   </span><span class="hs-special">(</span><span class="annot"><span class="annottext">Platform -&gt; Width
</span><a href="GHC.Cmm.Type.html#wordWidth"><span class="hs-identifier hs-var">wordWidth</span></a></span><span> </span><span class="annot"><span class="annottext">Platform
</span><a href="#local-6989586621681010805"><span class="hs-identifier hs-var">platform</span></a></span><span class="hs-special">)</span><span class="hs-special">)</span><span class="hs-special">]</span><span>
</span><span id="line-185"></span><span>
</span><span id="line-186"></span><span>        </span><span id="local-6989586621681010775"><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010775"><span class="hs-identifier hs-var">other_expr</span></a></span></span><span> </span><span class="hs-glyph">-&gt;</span><span> </span><span class="annot"><span class="annottext">CmmExpr
</span><a href="#local-6989586621681010775"><span class="hs-identifier hs-var">other_expr</span></a></span><span>
</span><span id="line-187"></span></pre></body></html>